package swb.api.com.service;

import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import swb.api.com.repository.dto.WithdrawAccount;
import swb.api.com.vo.req.BindAccountRequest;
import swb.api.com.vo.resp.BindAccountResponse;

import java.util.List;

public interface WithdrawAccountService {

    /**
     * 绑定提现账户
     * @param userId 用户ID
     * @param request 绑定请求
     * @return 绑定结果
     */
    BindAccountResponse bindAccount(Long userId, BindAccountRequest request);

    /**
     * 获取用户所有提现账户
     * @param userId 用户ID
     * @return 账户列表
     */
    List<WithdrawAccount> getUserAccounts(Long userId);

    /**
     * 设置默认账户
     * @param userId 用户ID
     * @param accountId 账户ID
     * @return 是否成功
     */
    boolean setDefaultAccount(Long userId, Long accountId);

    /**
     * 解绑账户
     * @param userId 用户ID
     * @param accountId 账户ID
     * @return 是否成功
     */
    boolean unbindAccount(Long userId, Long accountId);

    /**
     * 禁用提现账户
     * @param userId 用户ID
     * @param accountId 账户ID
     * @return 是否成功禁用
     */
    boolean disableAccount(Long userId, Long accountId);

    Page<WithdrawAccount> findAll(Pageable pageable);

    void updateStatus(Long id, Integer status);
}

